"""
列表推导式
生成器: 将列表推导式的中括号[]改成(), 就变成生成器了
字典推导式
集合推导式(set)
"""

###########
#  列表推导式  #
###########

# 提取 1-20 之间的奇数
odd_list = []
for i in range(1, 21):
    if i % 2 == 1:
        odd_list.append(i)

print(odd_list)

# 使用列表推导式
odd_list = [i for i in range(1, 21) if i % 2 == 1]
print(odd_list)

# 复杂逻辑情况下


def handle_item(item):
    return item * item


odd_list = [handle_item(i) for i in range(1, 21) if i % 2 == 1]
print(odd_list)

############
#  生成器推导式  #
############


odd_list_gen = (handle_item(i) for i in range(1, 21) if i % 2 == 1)
print(type(odd_list_gen))  # 生成器类型
for item in odd_list_gen:  # 使用生成器
    print(item)

###########
#  字典推导式  #
###########
my_dict = {"bob": 22, "jack": 23, "tom": 33}
reversed_my_dict = {value: key for key, value in my_dict.items()}
print(reversed_my_dict)

#############
#  set 推导式  #
#############
my_set = {key for key, value in my_dict.items()}
print(type(my_set))
print(my_set)
